﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{

    class Program
    {

        static void Main(string[] args)
        {
            string c;
            Console.WriteLine("请输入一个操作符（+，-，*，/）");
            c = Console.ReadLine();
            switch (c)
            {
                case "+":
                    Jai jai = new Jai();
                    jai.DisplayResult();
                    break;
                case "-":
                    Jian jian = new Jian();
                    jian.DisplayResult();
                    break;
                case "*":
                    Chen chen = new Chen();
                    chen.DisplayResult();
                    break;
                case "/":
                    Chu chu = new Chu();
                    chu.DisplayResult();
                    break;

                default:
                    break;
            }
            Console.ReadKey();
        }


        }


    class Calculate
    {
        protected int a;
        protected int b;
        // 一、编写一个控制台应用程序，接受用户输入的两个整数和一个操作符，以实现对两个整数的加、减、乘、除运算，并显示出计算结果。
        //1、创建Calculate积累，其中包含两个整型的protected成员，用以接收用户输入的两个整数。定义一个DisplayResult()虚方法，
        // 计算并输出结果。
        //2、定义四个类继承自Calculate类，分别重写DisplayResult()方法，实现两个整数的加、减、乘、除运算，并输出结果。
        //3、根据用户输入的操作符，实例化相应的类，完成运算并输出结果。
        //4、在主类中添加一个方法，形参为父类对象，根据传递实参的类型，调用方法，实现计算和显示结果。
        public virtual void DisplayResult()
        {
            Console.WriteLine("请输入第一个整数");
            a = int.Parse(Console.ReadLine());
            Console.WriteLine("请输入第二个整数");
            b = int.Parse(Console.ReadLine());           
        }
    }
    class Jai : Calculate
    { 
       public override void DisplayResult(){
            base.DisplayResult();
            Console.WriteLine("运算结果是"+ (a + b));
        }
    }
    class Jian : Calculate
    {
        public override void DisplayResult()
        {
            base.DisplayResult();
            Console.WriteLine("运算结果是" + (a - b));
        }
    }
    class Chen : Calculate
    {
        public override void DisplayResult()
        {
            base.DisplayResult();
            Console.WriteLine("运算结果是" + (a * b));
        }
    }
    class Chu : Calculate
    {
        public override void DisplayResult()
        {
            base.DisplayResult();
            Console.WriteLine("运算结果是" + (a / b));
        }
    }





    //二、创建一个Shape（形状）类，此类包含一个名为color的数据成员，用于存储颜色，
    //这个类还包含一个名为GetArea()的虚方法（这个方法是用来获取形状面积的）。
    //基于这个Shape，创建两个子类：Circle（圆形类）和Square（正方形类），Circle类中包含radius（半径）的数据成员，
    // Square类中包含sideLen（边长）的数据成员，这两个子类都去重写父类的GetArea()方法，各自去实现计算自己的面积。
    //在主类中添加一个方法，参数类型就是Shape，方法体中，用形参去调用GetArea()方法。
    //main方法中去测试这个方法。

    class Shape
    {
        public string color;//用于存储颜色
        public virtual void GetArea() { 
        
        }
    }
    class Circle : Shape//（圆形类）
    {
        public int radius;//（半径）
        public override void GetArea()
        {
            Console.WriteLine("圆形面积是" + (radius* radius*3.14));
        }
    }

    class Square : Shape//（正方形类）
    {
        public int sideLen;//（边长）
        public override void GetArea()
        {
            Console.WriteLine("正方形面积是" + (sideLen * sideLen));
        }
    }
}
